package com.projectCommon.util.springUtil.annotation;

/**
 * @author 吴宇~
 * @motto 我亦无他，唯手熟尔。
 * @edition jdk1.8
 * @reflection 0-1 喧闹任其喧闹，自由我自为之，我自风情万种，与世无争。
 * @date 2024/06/10/17:28
 * @target 心若有所向往，何惧道阻且长
 */

import java.lang.annotation.*;

/**
 * 想使用这个注解标注  一些 局部代码运行时间的注解
 * <p>
 * 需要注意的是，这个注解锁标注的方法，必须被spring的bean调用，不能是其他对象调用。否则无效，
 */
@Documented    //定义可以被文档工具文档化
@Retention(RetentionPolicy.RUNTIME)//声明周期为runtime，运行时可以通过反射拿到  重大事件thing
@Target({ElementType.METHOD})
public @interface MethodEventDescription {
    //设置这个方法的作用

    /**
     * 申明事件  其中可以写一个占位符： {{#1}} 代表方法中的第一个参数。
     *
     * @return
     */
    String event();

    /**
     * 是否读取方法的参数
     *
     * @return
     */
    boolean isFillMethodArg() default false;

    boolean isShowAllArg() default false;

    /**
     * 当前任务开始后，后续开启的任务时间  比如 excelToPic event start  A时间耗时1s B时间耗时2s  这样的需求
     * @return
     */
    boolean isShowAllEventCost() default false;

    //加一个日志级别  和人家的debug  ingo对应。类型使用日志枚举
    /**
     * 日志级别  默认为info 可以有debug,warn,error等等 如果有的话再说
     */
    String logLevel() default "info";
}
